using UnityEngine;
using QFramework;
using UnityEngine.UI;

namespace ProjectSurvivor
{
	public partial class FloatingTextController : ViewController
	{
		void Start()
		{
			// Code Here

			FloatingText.Hide();
		}
		public static void Play(Vector2 position, string text,bool critical=false)
		{
			//创建并添加到父级下
			mDefault.FloatingText.InstantiateWithParent(mDefault.transform)
			.PositionX(position.x).PositionY(position.y)
			.Self(f =>
			{
				var positionY=position.y;
				var textTrans = f.transform.Find("Text");
				var textComp = textTrans.GetComponent<Text>();
				textComp.text = text;
				if(critical)
				{
					textComp.color=Color.red;
				}
				//创建一段动作序列
				ActionKit.Sequence()
				//第一个插值动画，持续 0.5 秒
				.Lerp(0,0.5f,0.5f,(p)=>
				{                      //p 0~1
					f.PositionY(positionY+p*0.25f);
					//让文本的缩放在 0 到 8 的范围内变化，初始时缩小，逐渐放大
					textComp.LocalScaleX(Mathf.Clamp01(p*8));
					////Mathf.Clamp01：限制在 0-1 范围内
					textComp.LocalScaleY(Mathf.Clamp01(p*8));
				})
				.Delay(0.5f)//等待 0.5 秒后执行下一个动画。
				//第二个插值动画，让文本的透明度从 1 渐变到 0，持续 0.3 秒。
				.Lerp(1.0f,0,0.3f,(p)=>{textComp.ColorAlpha(p);},
				//文本对象在透明度动画结束后会被销毁。
				()=>{textTrans.DestroyGameObjGracefully();})
				//启动这个动画序列
				.Start(textComp);
			}).Show();
		}
		private static FloatingTextController mDefault;
		void Awake()
		{
			mDefault = this;
		}
		void OnDestroy()
		{
			mDefault = null;
		}
	}
}
